package airthmetic.exercise.bit;

/**
 *
 * 编写一个函数，输入是一个无符号整数（以二进制串的形式），返回其二进制表达式中
 * 设置位
 *  的个数（也被称为汉明重量）。
 *
 *
 *
 * 示例 1：
 *
 * 输入：n = 11
 * 输出：3
 * 解释：输入的二进制串 1011 中，共有 3 个设置位。
 *
 */
public class _191_位1的个数 {
    public int hammingWeight(int n) {
        int count = 0;
        while(n !=0){
            n &= n-1;
            count++;
        }
        return count;
    }

    public int hammingWeight2(int n) {
        int count = 0;
        for(int i=0; i<32; i++) {
            if (((n >> i) & 1) == 1) {
                count++;
            }
        }
        return count;
    }
}
